Quantifying and Explaining Immutability in Scala
نویسندگان
چکیده
Functional programming typically emphasizes programmingwith first-class functions and immutable data. Immutable data types enable fault tolerance in distributed systems, and ensure process isolation in message-passing concurrency, among other applications. However, beyond the distinction between reassignable and non-reassignable fields, Scala’s type system does not have a built-in notion of immutability for type definitions. As a result, immutability is “by-convention” in Scala, and statistics about the use of immutability in real-world Scala code are non-existent. This paper reports on the results of an empirical study on the use of immutability in several medium-to-largeScala open-source code bases, including Scala’s standard library and the Akka actor framework. The study investigates both shallow and deep immutability, two widely-used forms of immutability in Scala. Perhaps most interestingly, for type definitions determined to be mutable, explanations are provided for why neither the shallow nor the deep immutability property holds; in turn, these explanations are aggregated into statistics in order to determine the most common reasons for why type definitions are mutable rather than immutable.
منابع مشابه
Immutability: An Empirical Study in Scala
Utilizing immutability is considered to have many desired benefits when it comes to software development and reasoning about programs. It is also one of the core principles of functional programming, and many programming languages have support for specifying immutability. Developers can by specifying immutability write code that, for example, prevent program state from being unintentionally mut...
متن کاملSelf-Assembly: Lightweight Language Extension and Datatype Generic Programming, All-in-One!
In this paper we show a general mechanism, called self-assembly, for lightweight language extensions (LLEs). LLEs allow users to define generic operations or properties that operate over a large class of types. With LLEs it is possible, for example, for users to define their own Java-style automatic serialization mechanism; or implement simple forms of custom pluggable type system extensions li...
متن کاملImmutability
One of the main reasons aliasing has to be controlled, as highlighted in another chapter [1] of this book [2], is the possibility that a variable can unexpectedly change its value without the referrer’s knowledge. This book will not be complete without a discussion of the impact of immutability on referenceabundant imperative object-oriented languages. In this chapter we briefly survey possible...
متن کاملScrutinizing Immutability: Research on Sexual Orientation and U.S. Legal Advocacy for Sexual Minorities.
We review scientific research and legal authorities to argue that the immutability of sexual orientation should no longer be invoked as a foundation for the rights of individuals with same-sex attractions and relationships (i.e., sexual minorities). On the basis of scientific research as well as U.S. legal rulings regarding lesbian, gay, and bisexual (LGB) rights, we make three claims: First, a...
متن کاملTowards Unifying Immutability and Ownership
Immutability is a highly requested feature missing from the mainstream object-oriented languages. Boyland [2] argues that immutability cannot be introduced into a language without additional aliasing-prone mechanisms such as ownership (or fractional permissions). Rather than providing support for both of these important features independently [8, 6, 1], we explore the possibility of unifying th...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2017